﻿using System;
using System.Collections.Generic;
using System.Text;
using System.Security.Cryptography;

namespace Servicios
{
    public class SM
    {
        /// <summary>
        /// Para poder analizar el like en el storeProcedure
        /// </summary>
        /// <param name="s">Variable a concatner con % (equivale al *) para poder usar el like en SQL</param>
        /// <param name="primerValor">Agregar % (equivale al *) al inicio de el string</param>
        /// <param name="segundoValor">Agregar % (equivale al *) al final del string</param>
        /// <returns></returns>
        public static object BusqueSQL(string s, bool primerValor, bool segundoValor)
        {
            if (s.Equals(""))
                return null;
            else
            {
                if (primerValor)
                    s = "%" + s;
                if (segundoValor)
                    s = s + "%";
                return s;
            }
        }
        /// <summary>
        /// Metodo para encriptar la clave valida los null... si es... no hace nada y retorna vacio
        /// </summary>
        /// <param name="clave">clase sin encriptar</param>
        /// <returns>retorna la clave encriptada</returns>
        public static string claveEncriptada(string clave)
        {
            if (validarNull(clave))
            {
                HashAlgorithm hashAlgoritmo = null;
                hashAlgoritmo = new SHA512Managed();
                byte[] byteValue = Encoding.UTF8.GetBytes(clave);
                byte[] hastValue = hashAlgoritmo.ComputeHash(byteValue);
                return Convert.ToBase64String(hastValue);
            }
            else
                return ""; 
        }
        /// <summary>
        /// valida si una variable es null, si No es null devuelve TRUE
        /// </summary>
        /// <param name="evaluar">valor a evaluar</param>
        /// <returns>retorna true si es null y false si no es Null</returns>
        public static bool validarNull(object evaluar)
        {
            if (evaluar != null)
                return true;
            else
                return false;
        }
    }
} 
